Git Stash用法

创建仓库

  1. git init
  2. echo 123 > test.txt
  3. git add .
  4. git commit -m “add test file”
  5. git remote add origin git@git.xx.xx.xx:xxx/xxx.git
  6. git push origin master

以上内容比较简单,就不作详细讲述,如果上面的内容看不懂,下面的请放弃

使用git stash暂存

  1. 随意修改test.txt文件的内容,比如:画个心形,你正热火朝天修改中……

  2. 这时领导走过来拍了拍你的肩膀说到:”小伙子啊,创建个朕.txt文件提交上来,内容就写我还想再活五百年,test.txt文件这一版不作修改“。

  3. 你面露笑容的回答:“好的,没问题!”,内心却是:“MMP,MMP,MMP……”

  4. 辛辛苦苦修改的test.txt文件怎么办?眼瞅着就要完成了,难道复制出去,然后等解决领导需求后再粘贴回来?low不low?肯定不low啊,一个文件而已,这种方法很简单,*但是当你实际项目中修改了几十个文件的时候呢?*挨个儿复制出去?累傻小子呐?!!!!!

  5. git stash命令帮你解决问题,stash是存储的意思,也就是将当前工作区内的所有东西都存储起来,然后工作区所有文件恢复到修改之前的状态(并不是最新状态,不会和仓库中进行自动同步,需要你自己去pull),然后你就可以继续完成任务了。(在执行git stash之前需要先执行git add命令)

    stash可以进行多次操作,每次操作都会将当前工作区的文件情况暂存起来,stash是类栈存储,每次stash的序号都为0,此次之前stash的序号会自动+1

使用git stash pop取出

  1. git stash pop取出栈顶元素,也就是序号为0的那个,即最近一次执行git stash保存的内容。pop之后,暂存列表中就会自动将其清除掉,这个时候你再执行git stash list会发现毛都没有
  2. 这个时候可能就会纳闷了,我保存了好几次,但是我这次是想使用最开始stash的那份内容,怎么办?一直pop,直到最后一次?当然不行,上面刚讲过pop之后暂存列表中就没有stash的信息了,已经被pop出去的就找不回来了,等于是自杀式攻击,那咋整呢?
  3. git stash apply stash@{序号}可以将指定序号的stash内容弹出到工作区,此时工作区里文件的状态就和stash@{序号}里的一致了,但是这个命令无法将stash记录从暂存列表中删除,仅仅只是将文件恢复而已
  4. git stash drop stash@{序号}来丢弃暂存列表中的记录,可以配合apply使用

查看暂存记录中的信息

  1. 查看暂存列表:git stash list查看当前stash的列表
  2. 查看暂存内容:git stash show stash@{序号}查看指定序号的stash的内容

git stash save ‘msg’

等于是在stash的时候打了个标签,妖娆!!!!